package com.bins.redis.secondkill;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;

public class SecondKill implements Runnable {

    String iPhone = "iPhone";
    
    @Autowired
	private StringRedisTemplate stringRedisTemplate;

    private String userinfo;

    public SecondKill() {

    }

    public SecondKill(String userinfo) {
        this.userinfo = userinfo;
    }

    @Override
    public void run() {
//        try {
//        	stringRedisTemplate.watch(iPhone);
//            String val = stringRedisTemplate.opsForValue().get(iPhone);
//            Integer valint = Integer.valueOf(val);
//            if (valint <= 100 && valint >= 1) {
//                //使用multi命令开启事务
//                stringRedisTemplate.multi();
//                //事物命令入队
//                stringRedisTemplate.incrBy("iPhone", -1);
//                //使用exec命令执行事务
//                //提交事务，如果此时watchkeys被改动了，则返回null
//                List<Object> list = tx.exec();
//
//                if (list == null || list.size() == 0) {
//                    String failuserinfo = "fail" + userinfo;
//                    String failinfo = "用户：" + failuserinfo + "商品争抢失败，抢购失败";
//                    System.out.println(failinfo);
//                    /*抢购失败业务逻辑*/
//                    jedis.setnx(failuserinfo, failinfo);
//                } else {
//                    for (Object succ : list) {
//                        String succuserinfo = "succ" + succ.toString() + userinfo;
//                        String succinfo = "用户：" + succuserinfo + "抢购成功，当前抢购人数：" + (1 - (valint - 100));
//                        System.out.println(succinfo);
//                        /*抢购成功业务逻辑*/
//                        jedis.setnx(succuserinfo, succinfo);
//                    }
//                }
//
//            } else {
//                String failuserinfo = "kcfail" + userinfo;
//                String failinfo1 = "用户：" + failuserinfo + "商品抢购完毕，抢购失败";
//                System.out.println(failinfo1);
//                jedis.setnx(failuserinfo, failinfo1);
//                //Thread.sleep(500);
//                return;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            jedis.close();
//        }


    }
}